//
//  StaticTools+UI.m
//  JFmerchant
//
//  Created by 文彬 on 2017/12/29.
//  Copyright © 2017年 文彬. All rights reserved.
//

#import "StaticTools+UI.h"

@implementation StaticTools (UI)


/**
 生成纯色图片
 
 @param color 颜色
 @return 图片
 */
+ (UIImage *)imageWithColor:(UIColor *)color{
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

/**
 *  将图片裁剪成圆形
 *
 *  @param image 图片
 *  @param inset 边框
 *
 *  @return
 */
+ (UIImage*) circleImage:(UIImage*) image withParam:(CGFloat) inset
{
    
    UIGraphicsBeginImageContext(image.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 2);
    CGContextSetStrokeColorWithColor(context, [UIColor lightGrayColor].CGColor);
    CGRect rect = CGRectMake(inset, inset, image.size.width - inset * 2.0f, image.size.height - inset * 2.0f);
    CGContextAddEllipseInRect(context, rect);
    CGContextClip(context);
    
    [image drawInRect:rect];
    CGContextAddEllipseInRect(context, rect);
    CGContextStrokePath(context);
    UIImage *newimg = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    return newimg;
}

/**
 *  图片缩放
 *
 *  @param image   原始图片
 *  @param newSize 缩放的大小
 *
 *  @return
 */
+ (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize
{
    UIGraphicsBeginImageContext(newSize);
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    return newImage;
}

/**
 截图
 
 @param  view 要截图的视图
 @return 图片
 */
+ (UIImage*)screenView:(UIView *)view
{
    // 创建一个context
    UIGraphicsBeginImageContextWithOptions(view.bounds.size,view.opaque, 0.0);
    
    //把当前的全部画面导入到栈顶context中并进行渲染
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    
    // 从当前context中创建一个新图片
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
    
    // 使当前的context出堆栈
    UIGraphicsEndImageContext();
    
    return img;
    
}


/**
 获取文字高度

 @param textString 文字
 @param defautWidth 宽度
 @param font 字体
 @param lineSpace 行坚决
 @return 高度
 */
+ (float)getLabelHeight:(NSString *)textString
             defautWidth:(float)defautWidth
                    font:(UIFont*)font
               lineSpace:(float)lineSpace
{
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    [paragraphStyle setLineSpacing:lineSpace];
    
    CGSize labelSize = [textString
                        boundingRectWithSize : CGSizeMake(defautWidth, MAXFLOAT)
                        options : NSStringDrawingUsesLineFragmentOrigin
                        attributes : @{ NSFontAttributeName: font,NSParagraphStyleAttributeName:paragraphStyle}
                        context : nil
                        ].size;
    
    return labelSize.height;
}

/**
 获取文字高度

 @param textString 文字
 @param defautWidth 最大宽度
 @param font 字体
 @return size
 */
+ (float)getLabelHeight:(NSString *)textString
            defautWidth:(float)defautWidth
               fontSize:(UIFont*)font
{
    CGSize labelSize = [textString
                        boundingRectWithSize : CGSizeMake(defautWidth, MAXFLOAT)
                        options : NSStringDrawingUsesLineFragmentOrigin
                        attributes : @{ NSFontAttributeName:font}
                        context : nil
                        ].size;
    
    return labelSize.height;
}

/**
 获取文字宽度
 
 @param textString 文字
 @param defautHeight 高度
 @param font 字体
 @return size
 */
+ (float)getLabelWidth:(NSString *)textString
          defautHeight:(float)defautHeight
              fontSize:(UIFont*)font
{
    CGSize labelSize = [textString
                        boundingRectWithSize : CGSizeMake(MAXFLOAT, defautHeight)
                        options : NSStringDrawingUsesLineFragmentOrigin
                        attributes : @{ NSFontAttributeName:font}
                        context : nil
                        ].size;
    
    return labelSize.width;
}

@end
